<?php
//方法修饰符有 static final abstract
//static :静态的
// class Student{
//     public static $name="账上";//静态属性
//     static public function show(){//静态方法
//         echo "我是一个静态方法";
//     }
// }
// echo Student::$name;
// Student::show();

//统计在线人数
// class Student{
//     private static $num=0;
//     public function __construct()
//     {
//         self::$num++;
//     }
//     //执行unset方法是自动调用该销毁函数
//     public function __destruct()
//     {
//         self::$num--;
//     }
//     public function show(){
//         echo "在线人数".self::$num;
//     }
// }
// $stu1=new Student();
// $stu2=new Student();
// $stu3=new Student();
// $stu1->show();
// unset($stu2);//执行unset方法是自动调用该销毁函数
// $stu1->show();


//abstract
//abstract修饰的方法是抽象方法
//只有方法的声明没有方法的实现称为抽象方法
// 抽象类不能被实例化
// 子类继承了抽象类，就必须重新实现父类所有的抽象方法，否则不允许实例化
// 类中没有抽象方法也可以声明抽象类 用来阻止类的实例化
// abstract class Student{
//     public abstract function show();//抽象方法、
//     public abstract function say();
// }
// class child extends Student{
//     public function show(){
//         echo "sdhjsai";
//     }
//     public function say(){
//         echo "sdhjdsadsai";
//     }
// }
// $stu=new child();
// $stu->show();
// $stu->say();

//接口
// 如果一个类中所有都是抽象方法，那么这个抽象类可以声明成接口
interface Student{
    function say();
    function speek();
}
class Child implements Student{
    public function say(){
        echo "dashabi";
    }
    public function speek(){
        echo "sdsjh";
    }
}
?>